package cn.regexp.utils;

import lombok.Getter;
import lombok.Setter;

/**
 * Redis 中 key 命名的管理类
 */
@Getter
public enum RedisKeys {
    // 用户信息
    USER_INFO_TOKEN("user_token", Const.USER_INFO_TOKEN_VAI_TIME),
    // 餐厅信息
    CANTEEN_INFO("canteen_info", Const.CANTEEN_INFO_VAI_TIME),
    // 轮播图信息
    BANNER_INFO("banner_info", Const.BANNER_INFO_VAI_TIME),
    // 热门菜品信息
    HOT_GOODS_INFO("hot_goods_info", Const.HOT_GOODS_INFO_VAI_TIME);

    @Setter
    private String prefix;  // key的前缀
    @Setter
    private Long time;   // key的有效时间

    RedisKeys(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }

    /**
     * 拼接 key
     * 使用可变参方式，考虑到可能存在一个key拼接多个value的情况
     *
     * @param values 待拼接的参数
     * @return 拼接后的 key
     */
    public String join(String... values) {
        StringBuilder sb = new StringBuilder(64);
        sb.append(this.getPrefix());
        for (String value : values) {
            sb.append(":").append(value);
        }
        return sb.toString();
    }

}
